<menu id="8mwcu"></menu>
  • <rt id="8mwcu"><code id="8mwcu"></code></rt><center id="8mwcu"><dd id="8mwcu"></dd></center>
    <center id="8mwcu"></center>
    <dl id="8mwcu"></dl><tbody id="8mwcu"><small id="8mwcu"></small></tbody>
    
    
    <tbody id="8mwcu"></tbody>
     
    技術(shù)博客INFO
    聯(lián)系我們CONTACT

    公司地址:茂名市人民南路新村大院22號101

    電話:13592986386

    uwsgi學習您當前的位置:首頁 > uwsgi學習

    uwsgi學習

    發(fā)布時間:2024/10/24 17:06:02

    為什么需要uWSGI?
    在生產(chǎn)環(huán)境中部署Python Web項目時,uWSGI負責處理Nginx轉(zhuǎn)發(fā)的動態(tài)請求,并與我們的Python應(yīng)用程序溝通,同時將應(yīng)用程序返回的響應(yīng)數(shù)據(jù)傳遞給Nginx。


    客戶端 <-> Nginx <-> uWSGI <-> Python應(yīng)用程序(Django, Flask)


    uWSGI的安裝
    pip install uwsgi


    為了測試uWSGI安裝是否成功,可以編寫一個test.py的測試文件,添加如下代碼:
    def application(env, start_response):
        start_response('200 OK', [('Content-Type','text/html')])
        return [b"Hello World"]


    然后使用如下命令啟動uWSGI Web服務(wù)器, 端口8080
    uwsgi --http :8080 --wsgi-file test.py


    如果你已經(jīng)有了一個現(xiàn)成的Django項目,你可以使用如下命令啟動Web服務(wù)。
    # 使用uwsgi命令行啟動Django項目,端口8000
    $ uwsgi --http :8000 --module myproject.wsgi






    在生產(chǎn)環(huán)境中我們通常不會使用命令行啟動Python Web項目,而是通常編輯好uWSGI配置文件uwsgi.ini, 然后使用如下命令啟動Python Web項目。


    # 使用uwsgi.ini配置文件啟動Django應(yīng)用程序
    $ uwsgi --ini uwsgi.ini






    uWSGI 常用命令
    # 啟動uWSGI服務(wù)器
    $ uwsgi --ini uwsgi.ini


    # 重啟uWSGI服務(wù)器
    $ sudo service uwsgi restart


    # 查看所有uWSGI進程
    $ ps aux | grep uwsgi


    # 停止所有uWSGI進程
    $ sudo pkill -f uwsgi -9




    uWSGI常用配置
    uWSGI常用配置選項如下所示,稍加修改(項目名,項目根目錄)即可部署大部分Python Web項目。




    [uwsgi]
    uid=www-data # Ubuntu系統(tǒng)下默認用戶名
    gid=www-data # Ubuntu系統(tǒng)下默認用戶組
    project=mysite1  # 項目名
    base = /home/user1 # 項目根目錄


    home = %(base)/Env/%(project) # 設(shè)置項目虛擬環(huán)境,Docker部署時不需要
    chdir=%(base)/%(project) # 設(shè)置工作目錄
    module=%(project).wsgi:application # wsgi文件位置


    master=True # 主進程
    processes=2 # 同時進行的進程數(shù),一般


    # 選項1, 使用unix socket與nginx通信,僅限于uwsgi和nginx在同一主機上情形
    # Nginx配置中uwsgi_pass應(yīng)指向同一socket文件
    socket=/run/uwsgi/%(project).sock


    # 選項2,使用TCP socket與nginx通信
    # Nginx配置中uwsgi_pass應(yīng)指向uWSGI服務(wù)器IP和端口
    # socket=0.0.0.0:8000 或則 socket=:8000


    # 選項3,使用http協(xié)議與nginx通信
    # Nginx配置中proxy_pass應(yīng)指向uWSGI服務(wù)器一IP和端口
    # http=0.0.0.0:8000 


    # socket權(quán)限設(shè)置
    chown-socket=%(uid):www-data
    chmod-socket=664


    # 進程文件
    pidfile=/tmp/%(project)-master.pid


    # 以后臺守護進程運行,并將log日志存于temp文件夾。
    daemonize=/var/log/uwsgi/%(project).log 


    # 服務(wù)停止時,自動移除unix socket和pid文件
    vacuum=True


    # 為每個工作進程設(shè)置請求數(shù)的上限。當處理的請求總數(shù)超過這個量,進程回收重啟。
    max-requests=5000


    # 當一個請求花費的時間超過這個時間,那么這個請求都會被丟棄。
    harakiri=60


    #當一個請求被harakiri殺掉會,會輸出一條日志
    harakiri-verbose=true


    # uWsgi默認的buffersize為4096,如果請求數(shù)據(jù)超過這個量會報錯。這里設(shè)置為64k
    buffer-size=65536


    # 如果http請求體的大小超過指定的限制,打開http body緩沖,這里為64k
    post-buffering=65536


    #開啟內(nèi)存使用情況報告
    memory-report=true


    #設(shè)置平滑的重啟(直到處理完接收到的請求)的長等待時間(秒)
    reload-mercy=10


    #設(shè)置工作進程使用虛擬內(nèi)存超過多少MB就回收重啟
    reload-on-as=1024




    uWSGI和Nginx之間的通信方式


    如果你的nginx與uwsgi在同一臺服務(wù)器上,優(yōu)先使用本地機器的unix socket進行通信,這樣速度更快。此時nginx的配置文件如下所示:
    location / {     
        include /etc/nginx/uwsgi_params;
        uwsgi_pass unix:/run/uwsgi/django_test1.sock;
    }










    uWSGI是一個應(yīng)用服務(wù)器,它實現(xiàn)了WSGI協(xié)議并提供了高性能的Web應(yīng)用程序托管環(huán)境。它支持多種協(xié)議,包括HTTP、FastCGI、SCGI等,使得Python應(yīng)用程序可以與不同類型的Web服務(wù)器通信。
    uwsgi是一個通信協(xié)議,它定義了應(yīng)用服務(wù)器和Web服務(wù)器之間的通信方式。uWSGI應(yīng)用服務(wù)器是uwsgi協(xié)議的一種實現(xiàn)。




    美丽人妻中文字幕中出在线,97婷婷视频在线,亚洲精品午夜无码专区,人人九九精品国产 国产黄色视频在线播 亚洲精品91天天久久人人
    <menu id="8mwcu"></menu>
  • <rt id="8mwcu"><code id="8mwcu"></code></rt><center id="8mwcu"><dd id="8mwcu"></dd></center>
    <center id="8mwcu"></center>
    <dl id="8mwcu"></dl><tbody id="8mwcu"><small id="8mwcu"></small></tbody>
    
    
    <tbody id="8mwcu"></tbody>